<?php
/**
 * 语言加载器
 * 用于加载和切换不同语言的配置文件
 */

/**
 * 获取当前语言
 * @return string 当前语言代码
 */
function getCurrentLanguage() {
    // 从URL参数中获取语言，如果没有则使用默认语言
    if (isset($_GET['lang']) && in_array($_GET['lang'], ['en', 'zh'])) {
        return $_GET['lang'];
    }
    // 默认使用中文
    return 'zh';
}

/**
 * 加载语言配置文件
 * @param string $lang 语言代码
 * @return array 语言配置数组
 */
function loadLanguageConfig($lang = null) {
    if ($lang === null) {
        $lang = getCurrentLanguage();
    }
    
    $langFilePath = __DIR__ . '/../lang/' . $lang . '.php';
    
    if (file_exists($langFilePath)) {
        return require $langFilePath;
    }
    
    // 如果指定的语言文件不存在，加载默认语言（中文）
    return require __DIR__ . '/../lang/zh.php';
}

/**
 * 获取翻译文本
 * @param string $key 翻译键名，使用点号分隔（例如：hero.title）
 * @param string $lang 可选，语言代码
 * @return string 翻译后的文本
 */
function t($key, $lang = null) {
    static $translations = [];
    
    if ($lang === null) {
        $lang = getCurrentLanguage();
    }
    
    if (!isset($translations[$lang])) {
        $translations[$lang] = loadLanguageConfig($lang);
    }
    
    $keys = explode('.', $key);
    $value = $translations[$lang];
    
    foreach ($keys as $k) {
        if (!isset($value[$k])) {
            return $key; // 如果翻译键不存在，返回原键名
        }
        $value = $value[$k];
    }
    
    return $value;
}

/**
 * 获取所有可用语言
 * @return array 可用语言数组
 */
function getAvailableLanguages() {
    return [
        'zh' => '中文',
        'en' => 'English'
    ];
}